// 队列和击鼓传花算法

function Queue() {
  // 属性
  this.items = []
  // 方法
  // 1、添加元素
  Queue.prototype.enqueue = function (element) {
    this.items.push(element)
  }

  // 2、删除前端元素，shift()函数在前面删除并返回该元素
  Queue.prototype.dequeue = function () {
    return this.items.shift()
  }
  // 3、查看前端的元素
  Queue.prototype.front = function () {
    return this.items[0]
  }
  // 4、查看队列是否为空
  Queue.prototype.isEmpty = function () {
    return this.items.length === 0
  }
  // 5、查看队列中的元素个数
  Queue.prototype.size = function () {
    return this.items.length
  }
  // 6、toString方法
  Queue.prototype.toString = function () {
    var resultString = ''
    for (var i = 0; i < this.items.length; i++) {
      resultString += this.items[i] + ' '
    }
    return resultString
  }
}

// var q = new Queue()
// q.enqueue('aaa')
// q.enqueue('bbb')
// alert(q)
// alert(q.dequeue())
// 击鼓传花

function passGame(nameList, num) {
  var queue = new Queue()
  for (var i = 0; i < nameList.length; i++) {
    // 所有人加入到队列中
    queue.enqueue(nameList[i])
  }

  while (queue.size() > 1) {
    for (var i = 0; i < num - 1; i++) {
      queue.enqueue(queue.dequeue())
    }
    queue.dequeue()
  }
  alert(queue.size())
  var eneName = queue.front()
  alert('最终剩下的人：' + eneName)
}

var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
passGame(a, 3)
